home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / include / zss.h < prev   
C/C++ Source or Header  |  1992-06-03  |  6KB  |  210 lines

  1. /*
  2.  * zss.h --
  3.  *
  4.  *    Definitions for the zss library.
  5.  *
  6.  * Copyright 1992 Regents of the University of California
  7.  * Permission to use, copy, modify, and distribute this
  8.  * software and its documentation for any purpose and without
  9.  * fee is hereby granted, provided that this copyright
  10.  * notice appears in all copies.  The University of California
  11.  * makes no representations about the suitability of this
  12.  * software for any purpose.  It is provided "as is" without
  13.  * express or implied warranty.
  14.  *
  15.  * $Header: /sprite/lib/forms/RCS/proto.h,v 1.8 92/03/02 15:32:57 bmiller Exp $ SPRITE (Berkeley)
  16.  */
  17.  
  18. #ifndef _ZSS_LIB
  19. #define _ZSS_LIB
  20.  
  21.  
  22. #include <sprite.h>
  23. #include <kernel/zss.h>
  24.  
  25. /*
  26.  * The following are definitions for the Zss_Cmd system call.
  27.  */
  28.  
  29. #define ZSS_ATTACH        1    /* Attach a storage system. */
  30. #define ZSS_VERBOSE        2    /* Print verbose messages. */
  31. #define ZSS_MAX_FREE_TABLE_SIZE 3    /* Change the maximum size of the
  32.                      * free table. */
  33. #define ZSS_CHECKPOINT        4    /* Checkpoint the volume. */
  34. #define ZSS_WRITE        5    /* Write a fragment. */
  35. #define ZSS_READ        6    /* Read a fragment. */
  36. #define ZSS_APPEND        7    /* Append to a fragment. */
  37. #define ZSS_SANITY        8    /* Turn on sanity checks. */
  38. #define ZSS_GET_HEADER        9    /* Return the volume header. */
  39. #define ZSS_DETACH        10    /* Detach a volume. */
  40. #define ZSS_DELETE        11    /* Delete a fragment. */
  41. #define ZSS_GET_SUMMARY_TABLE    12    /* Get the summary table. */
  42. #define ZSS_FRAGMENT_SUMMARY    13    /* Get the summary info for a 
  43.                      * fragment. */
  44. #define ZSS_VOLUMES        14    /* Return the ids of attached
  45.                      * volumes. */
  46.  
  47. /*
  48.  * Argument for ZSS_MAX_FREE_TABLE_SIZE.
  49.  */
  50.  
  51. typedef struct {
  52.     Zebra_Uid    vid;        /* Volume ID */
  53.     int        maxSize;    /* Maximum size of free table. */
  54. } ZssFreeTableCmd;
  55.  
  56. /* 
  57.  * Argument for ZSS_CHECKPOINT.
  58.  */
  59.  
  60. typedef struct {
  61.     Zebra_Uid    vid;        /* Volume ID */
  62.     int        flags;        /* Debugging flags. */
  63. } ZssCheckpointCmd;
  64.  
  65. /*
  66.  * Argument for ZSS_WRITE. 
  67.  */
  68.  
  69. typedef struct {
  70.     int            serverID;    /* Server to access. -1 means local. */
  71.     Zebra_Uid        vid;        /* Volume ID to access. */
  72.     Zebra_Sfid        sfid;        /* SFID of fragment. */
  73.     Zebra_Checksum    checksum;    /* Checksum of the data buffer. */
  74.     Boolean        full;        /* TRUE => fragment will not be
  75.                      * appended to. */
  76.     Boolean        dataOnly;    /* Only write the data. */
  77.     Boolean        hdrOnly;    /* Only write the frame header. */
  78.     int            length;        /* Transfer length, in bytes. */
  79.     Address        buffer;        /* Address of the data buffer. */
  80.     int            frame;        /* Frame sfid was in. (out) */
  81. } ZssWriteCmd;
  82.  
  83.  
  84. /*
  85.  * Argument for ZSS_READ.
  86.  */
  87.  
  88. typedef struct {
  89.     int            serverID;    /* Server to access. -1 means local. */
  90.     Zebra_Uid        vid;        /* Volume ID to access. */
  91.     Zebra_Sfid        sfid;        /* SFID of fragment. */
  92.     int            offset;        /* Starting offset. */
  93.     int            length;        /* Transfer length, in bytes. */
  94.     Address        buffer;        /* Address of the data buffer. */
  95.     int            frame;        /* Frame sfid was in. (out) */
  96. }  ZssReadCmd;
  97.  
  98. /*
  99.  * Argument for ZSS_APPEND. Data buffer follows.
  100.  */
  101.  
  102. typedef ZssWriteCmd ZssAppendCmd;
  103.  
  104. /* 
  105.  * Argument for ZSS_SANITY.
  106.  */
  107.  
  108. typedef struct {
  109.     Zebra_Uid    vid;        /* Volume to use. */
  110.     int        sanity;        /* 1 == on, 0 == off. */
  111. } ZssSanityCmd;
  112.  
  113. /* 
  114.  * Argument for ZSS_DETACH.
  115.  */
  116.  
  117. typedef struct {
  118.     Zebra_Uid    vid;        /* Volume to use. */
  119.     Boolean    safe;        /* Do a checkpoint before detaching. */
  120. } ZssDetachCmd;
  121.  
  122. /*
  123.  * Argument for ZSS_DELETE.
  124.  */
  125.  
  126. typedef struct {
  127.     int        serverID;    /* Server to access. -1 means local. */
  128.     Zebra_Uid    vid;        /* Volume to use. */
  129.     Zebra_Sfid    sfid;        /* Stripe fragment to delete. */
  130. } ZssDeleteCmd;
  131.  
  132. /*
  133.  * Argument for ZSS_GET_SUMMARY_TABLE.
  134.  */
  135.  
  136. typedef struct {
  137.     Zebra_Uid    vid;        /* Volume to use. */
  138.     int        first;        /* Index of first frame to return. */
  139.     int        count;        /* Number of frames to return. */
  140.     int        bufSize;    /* Size of the buffer. */
  141.     Address    buffer;        /* Buffer for summary table. */
  142. } ZssSummaryCmd;
  143.  
  144. /*
  145.  * Argument for ZSS_FRAGMENT_SUMMARY
  146.  */
  147.  
  148. typedef struct {
  149.     Zebra_Uid        vid;        /* Volume to use. */
  150.     Zebra_Sfid        sfid;        /* Fragment to get summary for. */
  151.     ZssFrameSummary    summary;    /* Summary info for fragment. */
  152. } ZssFragSummaryCmd;
  153.  
  154. /*
  155.  * Argument for ZSS_VOLUMES.
  156.  */
  157. typedef struct {
  158.     int        count;                /* # of ids returned. (out) */
  159.     Zebra_Uid    vids[ZSS_MAX_VOLUMES];        /* Volume IDs (out) . */
  160. } ZssVolumesCmd;
  161.  
  162. /*
  163.  * Library routines.
  164.  */
  165.  
  166.  
  167. extern ReturnStatus    Zss_ReadVolumeHeader _ARGS_((int fd, 
  168.                 ZssVolumeHeader *headerPtr));
  169. extern ReturnStatus    Zss_WriteVolumeHeader _ARGS_((int fd, 
  170.                 ZssVolumeHeader *headerPtr));
  171. extern ReturnStatus    Zss_PrintVolumeHeader _ARGS_((FILE *stream, 
  172.                 ZssVolumeHeader *headerPtr));
  173. extern ReturnStatus    Zss_ReadCheckpoint _ARGS_((int fd, 
  174.                 ZssVolumeHeader *headerPtr,
  175.                 int index, ZssCheckpoint *checkpointPtr));
  176. extern ReturnStatus    Zss_WriteCheckpoint _ARGS_((int fd, 
  177.                 ZssVolumeHeader *headerPtr,
  178.                 int index, ZssCheckpoint *checkpointPtr));
  179. extern ReturnStatus    Zss_PrintCheckpoint _ARGS_((FILE *stream, 
  180.                 ZssCheckpoint *checkpointPtr));
  181. extern ReturnStatus    Zss_ReadSummaryTable _ARGS_((int fd, 
  182.                 ZssVolumeHeader *headerPtr, 
  183.                 ZssFrameSummary *tablePtr));
  184. extern ReturnStatus    Zss_WriteSummaryTable _ARGS_((int fd, 
  185.                 ZssVolumeHeader *headerPtr, 
  186.                 ZssFrameSummary *tablePtr));
  187. extern ReturnStatus    Zss_PrintSummaryTable _ARGS_((FILE *stream, 
  188.                 ZssFrameSummary *tablePtr));
  189. extern ReturnStatus    Zss_ReadFrameHeader _ARGS_((int fd, 
  190.                 ZssVolumeHeader *diskHeaderPtr, int index,
  191.                 ZssFrameHeader *frameHeaderPtr));
  192. extern ReturnStatus    Zss_WriteFrameHeader _ARGS_((int fd, 
  193.                 ZssVolumeHeader *diskHeaderPtr, int index,
  194.                 ZssFrameHeader *frameHeaderPtr));
  195. extern ReturnStatus    Zss_PrintFrameHeader _ARGS_((FILE *stream, 
  196.                 ZssFrameHeader *frameHeaderPtr));
  197. extern ReturnStatus    Zss_PrintFrameSubHeader _ARGS_((FILE *stream, 
  198.                 ZssFrameSubHeader *frameSubHeaderPtr));
  199. extern ReturnStatus    Zss_ReadFreeTable _ARGS_((int fd, 
  200.                 ZssVolumeHeader *headerPtr, int *tablePtr));
  201. extern ReturnStatus    Zss_WriteFreeTable _ARGS_((int fd, 
  202.                 ZssVolumeHeader *headerPtr, int *tablePtr));
  203. extern ReturnStatus    Zss_Checksum _ARGS_((int length, Address buffer,
  204.                 Zebra_Checksum *checksumPtr));
  205. extern ReturnStatus    Zss_ChecksumCopy _ARGS_((int length, Address inbuffer,
  206.                 Address outbuffer, 
  207.                 Zebra_Checksum *checksumPtr));
  208. #endif /* _ZSS_LIB */
  209.  
  210.